package com.ruoyi.mes.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.mes.domain.ProOrder;
import com.ruoyi.mes.vo.product.ProOrderVo;
import com.ruoyi.mes.vo.product.ProOutHouVo;

/**
 * 产品订单Service接口
 *
 * @author LongAndHao
 * @date 2023-04-04
 */
public interface IProOrderService
{
    /**
     * 查询产品订单
     *
     * @param id 产品订单主键
     * @return 产品订单
     */
    public ProOrder selectProOrderById(Long id);

    /**
     * 查询产品订单列表
     *
     * @param proOrder 产品订单
     * @return 产品订单集合
     */
    public List<ProOrder> selectProOrderList(ProOrder proOrder);

    /**
     * 新增产品订单
     *
     * @param proOrder 产品订单
     * @return 结果
     */
    public int insertProOrder(ProOrder proOrder);

    /**
     * 修改产品订单
     *
     * @param proOrder 产品订单
     * @return 结果
     */
    public int updateProOrder(ProOrder proOrder);

    /**
     * 批量删除产品订单
     *
     * @param ids 需要删除的产品订单主键集合
     * @return 结果
     */
    public int deleteProOrderByIds(Long[] ids);

    /**
     * 删除产品订单信息
     *
     * @param id 产品订单主键
     * @return 结果
     */
    public int deleteProOrderById(Long id);


    /**
     * 增 - 产品订单
     * @param proOrderVo
     * @return
     */
    AjaxResult saveOrder(ProOrderVo proOrderVo);

    /**
     * 删 - 产品订单 - id
     * @param orderId
     * @return
     */
    AjaxResult deleteByOrderId(Long orderId);

    /**
     * 改 - 产品订单
     * @param proOrderVo
     * @return
     */
    AjaxResult editProOrder(ProOrderVo proOrderVo);

    /**
     * 查 - 产品订单详情 - id
     * @param orderId
     * @return
     */
    AjaxResult getDetails(Long orderId);

    /**
     * 查 - 产品订单分页 - 不重复订单编码
     * @param proOrder
     * @return
     */
    List<ProOrder> selectDistinctOrders(ProOrder proOrder);


    /**
     * 产品出库
     * @param proOutHouVo
     * @return
     */
    AjaxResult proOuthou(ProOutHouVo proOutHouVo);

    /**
     * 查 - 订单出库信息
     * @param orderNumber 订单编号
     * @return
     */
    AjaxResult getOutHouInfo(String orderNumber);
}
